package org.fisco.bcos.sdk.v3.client.sign;

import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
import java.util.Map;

/**
 * @author 曳戈泰尔
 * @version 1.0
 * @description 应用MD5校验类
 * @date 2023/5/18 12:47 PM
 */
@Slf4j
public class AppMd5 {

    /**
     * 生成签名
     *
     * @return 签名，失败返回null
     */
    public static String generateSign(String appId, String appSecret, String timeStamp) {

        // 构建需要签名的Map
        Map<String, String> map = new HashMap<>();
        map.put("appId", appId);
        map.put("timeStamp", timeStamp);

        // 生成签名
        return Md5Helper.createSign(map, appSecret);
    }

    /**
     * 生成签名
     *
     * @param md5Data Md5Data
     * @return 签名，失败返回null
     */
    public static String generateSign(Md5Data md5Data) {

        // 构建需要签名的Map
        Map<String, String> map = new HashMap<>();
        map.put("appId", md5Data.getAppId());
        map.put("timeStamp", md5Data.getTimeStamp());

        // 生成签名
        return Md5Helper.createSign(map, md5Data.getAppSecret());
    }

    /**
     * 验证签名
     *
     * @param md5Data Md5Data
     * @return true:验证通过，false:验证失败
     */
    public static Boolean verifySign(Md5Data md5Data) {

        // 构建需要验证签名的Map
        Map<String, String> map = new HashMap<>();
        map.put("appId", md5Data.getAppId());
        map.put("timeStamp", md5Data.getTimeStamp());
        map.put("sign", md5Data.getSign());

        // 验证签名
        return Md5Helper.isCorrectSign(map, md5Data.getAppSecret());
    }
}
